/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package interfaces;
import entidades.Aeroporto;
import entidades.Cidade;
import erros.ErroAtualizacao;
import erros.ErroCadastramento;
import java.util.ArrayList;
import erros.ErroRecuperacao;
import erros.ErroRemocao;
/**
 * Interface que provê os serviços prestados pela controladora
 * de negócio da entidade aeroporto.
 * @author thiagostuckert
 * @author daniel
 */
public interface IGerenciaAeroporto {
    /**
     * Recupera os aeroportos cadastrados no banco de dados.
     * @return Retorna a lista de aeroportos cadastrados.
     * @throws ErroRecuperacao Joga a exceção de erro de recuperação.
     */
    ArrayList<Aeroporto> recuperarAeroportos() throws ErroRecuperacao;

    /**
     * Cadastra um aeroporto e uma determinada cidade, caso ela exista.
     * @param aeroporto Aeroporto a ser cadastrado
     * @param cidade Cidade hospedeira do aeroporto.
     * @throws ErroCadastramento Joga exceção de erro de cadastramento.
     */
    void cadastrarAeroporto(Aeroporto aeroporto, Cidade cidade)
            throws ErroCadastramento;

    /**
     * Deleta um aeroporto da base de dados.
     * @param aeroporto Aeroporto a ser deletado
     * @throws ErroRemocao Joga a exceção de erro de remoção.
     */
    void deletarAeroporto(Aeroporto aeroporto) throws ErroRemocao;

    /**
     * Atualiza o valor do aeroporto antigo para um novo valor.
     * @param aeroportovelho Valor a ser atualizado.
     * @param aeroportonovo Novo valor.
     * @throws ErroAtualizacao Joga erro de atualização.
     */
    void atualizarAeroporto(Aeroporto aeroportovelho, Aeroporto aeroportonovo)
            throws ErroAtualizacao;
}
